<?php
namespace Swiftx\System;
/**
 * 动态对象静态化调用接口父类,用于实现Facade的设计模式
 * @author		Hismer <odaytudio@gmail.com>
 * @since		2014-11-05
 * @copyright	Copyright (c) 2014-2015 Swiftx Inc.
 * @package    Swiftx\System
 */
abstract class Facade {

	/** @var array 单例数据集 */
	protected static $_INSTANCE = array();

	/** 禁止实例化对象 */
	private function __construct(){}

	/**
	 * 读取属性
	 * @param $name
	 * @return mixed
	 */
	public static function Attr($name){
		return static::$_INSTANCE->$name;
	}

	/**
	 * 方法转换器
	 * @param $method
	 * @param $args
	 * @return mixed
	 */
	public static function __callStatic($method, $args){
		$instance = static::$_INSTANCE[static::class];
		return call_user_func_array([$instance, $method], $args);
	}

	/**
	 * 初始化对象
	 * @param $object
	 */
	protected static function InitInstance($object){
		static::$_INSTANCE[static::class] = $object;
	}

}
